home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- __revision__ = '$Id: archive_util.py 37828 2004-11-10 22:23:15Z loewis $'
- import os
- from distutils.errors import DistutilsExecError
- from distutils.spawn import spawn
- from distutils.dir_util import mkpath
- from distutils import log
-
- def make_tarball(base_name, base_dir, compress = 'gzip', verbose = 0, dry_run = 0):
- compress_ext = {
- 'gzip': '.gz',
- 'bzip2': '.bz2',
- 'compress': '.Z' }
- compress_flags = {
- 'gzip': [
- '-f9'],
- 'compress': [
- '-f'],
- 'bzip2': [
- '-f9'] }
- if compress is not None and compress not in compress_ext.keys():
- raise ValueError, "bad value for 'compress': must be None, 'gzip', or 'compress'"
-
- archive_name = base_name + '.tar'
- mkpath(os.path.dirname(archive_name), dry_run = dry_run)
- cmd = [
- 'tar',
- '-cf',
- archive_name,
- base_dir]
- spawn(cmd, dry_run = dry_run)
- if compress:
- spawn([
- compress] + compress_flags[compress] + [
- archive_name], dry_run = dry_run)
- return archive_name + compress_ext[compress]
- else:
- return archive_name
-
-
- def make_zipfile(base_name, base_dir, verbose = 0, dry_run = 0):
-
- try:
- import zipfile
- except ImportError:
- zipfile = None
-
- zip_filename = base_name + '.zip'
- mkpath(os.path.dirname(zip_filename), dry_run = dry_run)
- if zipfile is None:
- if verbose:
- zipoptions = '-r'
- else:
- zipoptions = '-rq'
-
- try:
- spawn([
- 'zip',
- zipoptions,
- zip_filename,
- base_dir], dry_run = dry_run)
- except DistutilsExecError:
- raise DistutilsExecError, "unable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utility" % zip_filename
- except:
- None<EXCEPTION MATCH>DistutilsExecError
-
-
- None<EXCEPTION MATCH>DistutilsExecError
- log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir)
-
- def visit(z, dirname, names):
- for name in names:
- path = os.path.normpath(os.path.join(dirname, name))
- if os.path.isfile(path):
- z.write(path, path)
- log.info("adding '%s'" % path)
- continue
-
-
- if not dry_run:
- z = zipfile.ZipFile(zip_filename, 'w', compression = zipfile.ZIP_DEFLATED)
- os.path.walk(base_dir, visit, z)
- z.close()
-
- return zip_filename
-
- ARCHIVE_FORMATS = {
- 'gztar': (make_tarball, [
- ('compress', 'gzip')], "gzip'ed tar-file"),
- 'bztar': (make_tarball, [
- ('compress', 'bzip2')], "bzip2'ed tar-file"),
- 'ztar': (make_tarball, [
- ('compress', 'compress')], 'compressed tar file'),
- 'tar': (make_tarball, [
- ('compress', None)], 'uncompressed tar file'),
- 'zip': (make_zipfile, [], 'ZIP file') }
-
- def check_archive_formats(formats):
- for format in formats:
- if not ARCHIVE_FORMATS.has_key(format):
- return format
- continue
- else:
- return None
-
-
- def make_archive(base_name, format, root_dir = None, base_dir = None, verbose = 0, dry_run = 0):
- save_cwd = os.getcwd()
- if root_dir is not None:
- log.debug("changing into '%s'", root_dir)
- base_name = os.path.abspath(base_name)
- if not dry_run:
- os.chdir(root_dir)
-
-
- if base_dir is None:
- base_dir = os.curdir
-
- kwargs = {
- 'dry_run': dry_run }
-
- try:
- format_info = ARCHIVE_FORMATS[format]
- except KeyError:
- raise ValueError, "unknown archive format '%s'" % format
-
- func = format_info[0]
- for arg, val in format_info[1]:
- kwargs[arg] = val
-
- filename = apply(func, (base_name, base_dir), kwargs)
- if root_dir is not None:
- log.debug("changing back to '%s'", save_cwd)
- os.chdir(save_cwd)
-
- return filename
-
-